Pada laporan ini, akan kami sajikan analisis kualitas udara di wilayah DKI Jakarta berdasarkan data yang dikumpulkan dari stasiun pemantauan Bundaran HI. Data ini mencakup berbagai parameter polusi udara yang diukur selama periode tertentu, termasuk PM10, SO2, CO, O3, NO2, dan PM2.5. Struktur laporan mencakup deskripsi data, data preprocessing, data exploration, statistical analysis, dan diskusi untuk memberikan pemahaman yang komprehensif mengenai kondisi kualitas udara di lokasi tersebut.
Topik ini penting karena kualitas udara memiliki dampak signifikan terhadap kesehatan masyarakat dan lingkungan, terutama di area urban seperti Jakarta. Dengan memahami pola dan tingkat polusi udara di Bundaran HI, kita dapat mengambil langkah-langkah mitigasi yang lebih efektif. Analisis ini relevan karena memberikan wawasan berharga yang dapat membantu dalam perumusan kebijakan lingkungan dan kesehatan di Jakarta. Temuan-temuan ini berpotensi diterapkan dalam upaya peningkatan kualitas udara dan perlindungan kesehatan masyarakat di area tersebut.
Laporan ini ditujukan untuk peneliti, pemangku kepentingan, dan pihak
lain yang tertarik pada kualitas udara di Jakarta. Tujuan analisis ini
adalah untuk mengidentifikasi tren dan pola polusi udara serta
faktor-faktor kritis yang mempengaruhinya, dengan fokus untuk menjawab
beberapa pertanyaan penting, yaitu:
- Bagaimana tren polusi udara di Bundaran HI selama periode
2010-2021?
- Parameter polusi udara mana yang paling dominan dan kritis di stasiun
Bundaran HI?
- Apa yang mempengaruhi baik atau tidaknya kualitas udara di lokasi
ini?
Metode yang kami gunakan adalah Exploratory Data Analysis (EDA). EDA adalah pendekatan menganalisis kumpulan data untuk merangkum karakteristik utamanya, sering kali menggunakan grafik statistik dan metode visualisasi data lainnya (Wikipedia). Kami menggunakan metode EDA karena sesuai untuk mencapai tujuan analisis ini dan memberikan hasil yang akurat dan mendalam. Metode statistik yang kami pakai untuk menganalisis korelasi antara satu variabel dengan lainnya yaitu Pearson Correlation. Pearson correlation ialah untuk mengetahui keeratan hubungan antara variabel dependen dan independen. Pearson correlation berada di antara –1 hingga 1 dimana jika ia bernilai positif, hubungan itu menunjukkkan searah dan bersifat bertambah, dan sebaliknya jika bernilai negatif maka menunjukkan hubungan searah akan dan bersifat berkurang (Statistika UB).
Analisis ini dilakukan dengan asumsi bahwa data yang tersedia representatif dan akurat. Namun, perlu diakui bahwa analisis ini memiliki batasan, seperti keterbatasan data PM2.5 yang hanya tersedia dalam jumlah terbatas. Laporan ini diharapkan memberikan wawasan mendalam dan membantu pembaca dalam memahami kondisi kualitas udara di Bundaran HI, serta mendukung pengambilan keputusan yang lebih baik terkait upaya peningkatan kualitas udara di Jakarta.
Dataset ini diambil dari sumber terbuka di Kaggle, dengan link berikut: Air Quality Index in Jakarta 2010-2021. Data ini dikumpulkan dari Open Data Jakarta dan bersumber dari Dinas Lingkungan Hidup Provinsi DKI Jakarta.
df<-read.csv("/Users/debby/Downloads/ispu_dki1.csv")
head(df)
## tanggal stasiun pm10 so2 co o3 no2 max critical categori pm25
## 1 2010-01-01 DKI1 (Bunderan HI) 60 4 73 27 14 73 CO SEDANG NA
## 2 2010-01-02 DKI1 (Bunderan HI) 32 2 16 33 9 33 O3 BAIK NA
## 3 2010-01-03 DKI1 (Bunderan HI) 27 2 19 20 9 27 PM10 BAIK NA
## 4 2010-01-04 DKI1 (Bunderan HI) 22 2 16 15 6 22 PM10 BAIK NA
## 5 2010-01-05 DKI1 (Bunderan HI) 25 2 17 15 8 25 PM10 BAIK NA
## 6 2010-01-06 DKI1 (Bunderan HI) 30 3 22 19 11 30 PM10 BAIK NA
Dataset ini terdiri dari 11 kolom yang menjelaskan berbagai parameter
dan kategori kualitas udara. Berikut adalah rincian variabel dalam
dataset: tanggal : Tanggal pengukuran dilakukan
stasiun : Nama stasiun pemantauan, dalam hal ini adalah
“DKI1 (Bundaran HI)”
pm10 : Konsentrasi partikulat berukuran ≤ 10 mikrometer
(PM10), diukur dalam µg/m³
so2 : Konsentrasi sulfur dioksida (SO2),
diukur dalam µg/m³
co : Konsentrasi karbon monoksida (CO), diukur dalam
µg/m³
o3 : Konsentrasi ozon (O3), diukur dalam
µg/m³
no2 : Konsentrasi nitrogen dioksida (NO2),
diukur dalam µg/m³
max : Nilai maksimum dari parameter polutan yang diukur
pada hari tersebut
critical : Parameter polutan yang dianggap paling
kritis pada hari tersebut (misalnya, CO, O3, atau
PM10)
categori : Kategori kualitas udara berdasarkan
parameter yang diukur, seperti “BAIK”, “SEDANG”, “TIDAK SEHAT”
pm25 : Konsentrasi partikulat berukuran ≤ 2.5
mikrometer (PM2.5), diukur dalam µg/m³. Data ini baru
tersedia pada periode 2021
Data ini sangat relevan untuk menganalisis tren dan pola kualitas udara di Jakarta, khususnya di area Bundaran HI yang merupakan salah satu pusat aktivitas dan lalu lintas di kota ini. Mengingat dampak signifikan dari polusi udara terhadap kesehatan masyarakat dan lingkungan, analisis data ini dapat memberikan wawasan yang berharga untuk pengambilan keputusan dan kebijakan terkait upaya pengendalian polusi udara.
Pertama, kami menghapus kolom pm25 karena hanya ada pada tahun 2021 untuk mengurangi risiko menghasilkan kesimpulan yang tidak dapat diandalkan.
df = subset(df, select = -c(pm25)) #menghapus kolom pm25 karena hanya tersedia di tahun 2021
Selanjutnya, untuk menghandle missing value yang terdapat di beberapa variabel, kami terlebih dahulu mencari tahu apakah variabel tersebut skewed atau tidak.
df <- data.frame(lapply(df, function(x) replace(x, x == "", NA))) #memperjelas nilai kosong ("") menjadi NA
sapply(df, function(x) sum(is.na(x))) #menghitung jumlah missing values di data
## tanggal stasiun pm10 so2 co o3 no2 max
## 0 0 212 175 150 203 193 9
## critical categori
## 110 0
lapply(df, function(x) if(is.numeric(x)) skew(x) else NA) #melihat skewness dari kolom *skew* untuk semua variabel numerik
## $tanggal
## [1] NA
##
## $stasiun
## [1] NA
##
## $pm10
## [1] -0.4968696
##
## $so2
## [1] 1.414197
##
## $co
## [1] 0.7878104
##
## $o3
## [1] 0.7747022
##
## $no2
## [1] 1.030558
##
## $max
## [1] 0.1905914
##
## $critical
## [1] NA
##
## $categori
## [1] NA
Dapat dilihat bahwa semua variabel numeriknya tidak berdistribusi normal (0) dan skewed, maka missing values akan kami ganti dengan median masing-masing variabel agar menghindari hal-hal yang tidak diinginkan.
#mengganti NA di semua variabel numerik dengan median
df <- data.frame(lapply(df, function(x) {
if (is.numeric(x)) {
x[is.na(x)] <- median(x, na.rm = TRUE)
}
return(x)
}))
Kemudian, untuk missing values pada variabel kategorikal akan kami ganti dengan “TIDAK ADA DATA” untuk memperjelas data.
#mengganti NA di semua variabel kategorikal dengan "TIDAK ADA DATA"
df <- df %>%
mutate_if(is.character, ~ ifelse(is.na(.), "TIDAK ADA DATA", .))
Selain itu, encoding juga diperlukan agar variabel kategorikal dapat diinterpretasikan atau diproses secara benar oleh algoritma atau model analisis data.
df$tanggal<- unclass(df$tanggal)
df$stasiun<- unclass(df$stasiun)
df$critical<- unclass(df$critical)
df$categori<- unclass(df$categori)
str(df)
## 'data.frame': 4383 obs. of 10 variables:
## $ tanggal : chr "2010-01-01" "2010-01-02" "2010-01-03" "2010-01-04" ...
## $ stasiun : chr "DKI1 (Bunderan HI)" "DKI1 (Bunderan HI)" "DKI1 (Bunderan HI)" "DKI1 (Bunderan HI)" ...
## $ pm10 : num 60 32 27 22 25 30 41 64 55 34 ...
## $ so2 : num 4 2 2 2 2 3 4 8 5 5 ...
## $ co : num 73 16 19 16 17 22 24 51 39 23 ...
## $ o3 : num 27 33 20 15 15 19 27 19 23 26 ...
## $ no2 : num 14 9 9 6 8 11 13 15 16 12 ...
## $ max : num 73 33 27 22 25 30 41 64 55 34 ...
## $ critical: chr "CO" "O3" "PM10" "PM10" ...
## $ categori: chr "SEDANG" "BAIK" "BAIK" "BAIK" ...
Terdapat 4383 observasi/records dengan 10 variabel di dataset.
names(df)
## [1] "tanggal" "stasiun" "pm10" "so2" "co" "o3"
## [7] "no2" "max" "critical" "categori"
tanggal: Tanggal pengukuran dilakukan.
stasiun: Nama stasiun pemantauan, dalam hal ini adalah
“DKI1 (Bundaran HI)”
pm10: Konsentrasi partikulat berukuran ≤ 10 mikrometer
(PM10), diukur dalam µg/m³
so2: Konsentrasi sulfur dioksida (SO2),
diukur dalam µg/m³
co: Konsentrasi karbon monoksida (CO), diukur dalam
µg/m³ o3: Konsentrasi ozon (O3), diukur
dalam µg/m³
no2: Konsentrasi nitrogen dioksida (NO2),
diukur dalam µg/m³
max: Nilai maksimum dari parameter polutan yang diukur
pada hari tersebut
critical: Parameter polutan yang dianggap paling kritis
pada hari tersebut (misalnya, CO, O3, atau
PM10)
categori: Kategori kualitas udara berdasarkan parameter
yang diukur, seperti “BAIK”, “SEDANG”, “TIDAK SEHAT”
sapply(df, function(x) class(x)) # menampilkan semua variabel dan tipe datanya (class)
## tanggal stasiun pm10 so2 co o3
## "character" "character" "numeric" "numeric" "numeric" "numeric"
## no2 max critical categori
## "numeric" "numeric" "character" "character"
Tipe variabel dalam dataset divariasikan dengan 2 variabel kategorikal, yaitu tanggal, stasiun, critical, dan categori, serta 9 variabel numerik, yaitu pm10, so2, co, o3, no2, dan max.
summary(df)
## tanggal stasiun pm10 so2
## Length:4383 Length:4383 Min. : 4.00 Min. : 1.00
## Class :character Class :character 1st Qu.: 44.00 1st Qu.: 10.00
## Mode :character Mode :character Median : 54.00 Median : 17.00
## Mean : 52.31 Mean : 18.05
## 3rd Qu.: 61.00 3rd Qu.: 24.00
## Max. :104.00 Max. :106.00
## co o3 no2 max
## Min. : 3.00 Min. : 3.00 Min. : 1.0 Min. : 0.00
## 1st Qu.:18.00 1st Qu.: 29.00 1st Qu.: 7.0 1st Qu.: 49.00
## Median :24.00 Median : 46.00 Median :14.0 Median : 60.00
## Mean :24.82 Mean : 49.35 Mean :14.1 Mean : 60.74
## 3rd Qu.:31.00 3rd Qu.: 65.00 3rd Qu.:19.0 3rd Qu.: 73.00
## Max. :95.00 Max. :198.00 Max. :79.0 Max. :198.00
## critical categori
## Length:4383 Length:4383
## Class :character Class :character
## Mode :character Mode :character
##
##
##
sapply(df, function(x) length(unique(x)))
## tanggal stasiun pm10 so2 co o3 no2 max
## 4383 1 91 79 74 146 61 142
## critical categori
## 6 4
Semua value pada variabel tanggal adalah unique value karena per harinya diperoleh 1 data. Stasiun hanya memiliki 1 unique value sebab semua observasi dilakukan di Stasiun Bundaran HI. Untuk variabel partikulat, jumlah unique valuenya beragam, pm10 sebanyak 91, so2 sebanyak 79, co sebanyak 74, o3 sebanyak 146, no2 sebanyak 61, dan max sebanyak 142. Pada variabel critical terdapat 6 unique value, value tersebut merupakan partikulat-partikulat udara seperti pm10 dan so2. Variabel categori hanya memiliki 4 unique value, value tersebut yaitu BAIK, SEDANG, TIDAK SEHAT, dan TIDAK ADA DATA.
Value yang memiliki jumlah kemunculan paling banyak sudah jelas, yaitu “DKI1 (Bunderan HI)” pada kolom stasiun.
num_cols <- unlist(lapply(df, is.numeric)) #menerapkan fungsi is.numeric ke setiap kolom dalam df
df_num <- df[ , num_cols] #subset df untuk keep hanya variabel numerik
d <- melt(df_num) #mengubah format dataframe menjadi panjang
## No id variables; using all as measure variables
ggplotly(ggplot(d, aes(x=value)) +
facet_wrap(~variable, scales = "free_x") + #facet_wrap untuk buat plot berdasarkan variabel dengan sumbu x menyesuaikan
geom_histogram()
)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Dari visualisasi ini, terlihat bahwa variabel pm10 menunjukkan distribusi yang paling mendekati merata, sementara variabel lainnya cenderung memiliki distribusi lebih terkonsentrasi di sekitar nilai-nilai tertentu. Insight penting adalah keberadaan beberapa outlier yang walaupun dapat mempengaruhi analisis data, akan kami hiraukan secara sengaja karena jika kami mengotak-atik nilai-nilai tersebut, data dapat menjadi kacau dan tidak akurat lagi.
cr <- cor(df[, c(3:7)], use = "complete.obs") #korelasi antara konsentrasi partikulat dalam udara
corrplot(cr, method = 'number', shade.col=NA, tl.col="black", tl.srt=45) #correlation plot
cor(df[, c(3:7)])
## pm10 so2 co o3 no2
## pm10 1.00000000 0.07558047 0.3341456 0.3060514 0.3297677
## so2 0.07558047 1.00000000 -0.1115481 -0.1528052 0.1550730
## co 0.33414561 -0.11154813 1.0000000 0.2618603 0.1995886
## o3 0.30605145 -0.15280525 0.2618603 1.0000000 0.1294006
## no2 0.32976770 0.15507298 0.1995886 0.1294006 1.0000000
Secara umum, visualisasi tersebut tidak menunjukkan adanya korelasi yang sangat kuat di antara variabel-variabel dalam data. Korelasi dianggap kuat jika nilai absolutnya mendekati 1.
Korelasi positif berarti bahwa ketika satu variabel meningkat, variabel lainnya cenderung meningkat juga, sedangkan korelasi negatif berarti bahwa ketika satu variabel meningkat, variabel lainnya cenderung menurun. Korelasi yang dekat dengan nol (baik positif maupun negatif) menunjukkan hubungan yang sangat lemah atau tidak ada antara variabel-variabel tersebut.
Dalam konteks kualitas udara, korelasi antara berbagai polutan dapat membantu memahami sumber dan dinamika pencemaran udara. Korelasi yang lebih kuat mungkin menunjukkan bahwa polutan tersebut berasal dari sumber yang sama atau terlibat dalam proses kimia yang sama di atmosfer, sedangkan korelasi yang lebih lemah menunjukkan hubungan yang lebih kompleks atau tidak terkait langsung.
ggplotly(ggplot(df, aes(x = reorder(critical, -table(critical)[critical]))) + #reorder agar barnya tersusun secara descending
geom_bar(fill = "hotpink4") + #bar plot
labs(x = "critical", y = "count", title = "Distribusi Parameter Critical")
)
Critical adalah parameter yang mempunyai hasil pengukuran tertinggi. Parameter yang dimaksud merupakan salah satu dari CO, O3, PM10, PM2.5, atau SO2. Dari visualisasi di atas, kita tahu bahwa PM10 adalah parameter yang paling sering mencapai level kritis dibandingkan parameter lainnya, dengan jumlah pengukuran tertinggi sebanyak 1996 kali. Hal ini menunjukkan bahwa partikel PM10 merupakan masalah utama dalam kualitas udara di wilayah sekitaran Bundaran HI. O3 juga menunjukkan angka yang cukup tinggi, menandakan bahwa ozon adalah parameter kedua yang sering mencapai level kritis. Sebaliknya, SO2 memiliki jumlah pengukuran tertinggi yang paling sedikit, hanya 56 kali, menunjukkan bahwa sulfur dioksida mungkin tidak menjadi perhatian utama dalam hal kualitas udara kritis di wilayah ini.
Untuk versi periode 2010 - 2021:
dates <- as.Date(df$tanggal) #menjadikan variabel tanggal berformat as.Date
#menambahkan kolom tahun untuk mempermudah pengelompokkan data per tahun
df <- df %>%
mutate(year = format(dates, "%Y"))
df <- df %>%
select(tanggal, year, everything()) #menempatkan kolom year di sebelah kolom tanggal
summary_data <- df %>%
group_by(year, critical) %>%
summarise(Count = n()) %>%
ungroup()
## `summarise()` has grouped output by 'year'. You can override using the
## `.groups` argument.
plot_ly(summary_data, x = ~year, y = ~Count, color = ~critical, type = 'scatter', mode = 'lines+markers') %>% #scatter plot dengan atribut line dan marker
layout(title = "Jumlah Kejadian Polutan Kritikal per Tahun",
xaxis = list(title = "Tahun"),
yaxis = list(title = "Jumlah Kejadian"))
Dari sini, dapat diketahui perubahan jumlah partikulat yang
kritis per tahunnya bervariasi. PM10 bergerak secara tidak
konsisten, mulai menurun drastis pada 2011 dan 2012 kemudian meningkat
kembali pada tahun 2013 dan 2015 di mana pada 2015 tingkat jumlahnya ada
pada puncak tertinggi dan pada 2021 di titik terendahnya selama periode
2010-2021.Begitu juga dengan O3 yang grafiknya naik-turun,
meningkat secara signifikan dari 2010-2012 dan 2016-2017, menempati
puncak tertingginya pada 2012 dan terendah pada 2016.
Partikulat PM2.5 meningkat secara drastis dari 2020
hingga 2021 disebabkan oleh arah angin yang membawa emisi
PM2.5 (debu dengan ukuran < 2.5 mikro) yang dihasilkan
oleh pembangkit listrik Suralaya ke Jakarta.
Sementara itu, partikulat CO dan SO2 secara konsisten
bertahan di jumlah yang cukup rendah dibandingkan dengan partikulat
lain, yaitu di bawah 20 kejadian.
#membuat variabel baru "sum_partikulat" yang merupakan jumlah total dari partikulat di hari tersebut
df$sum_partikulat <- rowSums(df[, c("pm10", "so2", "co", "o3", "no2")])
#membuat boxplot interaktif
ggplotly(ggplot(df, aes(x = categori, y = sum_partikulat, fill = categori)) +
geom_boxplot() +
scale_fill_manual(values = c("BAIK" = "springgreen4",
"SEDANG" = "gold1",
"TIDAK SEHAT" = "red")) +
labs(x = "Kategori", y = "Total Partikulat (µgram/m³)", title = "Pengaruh Jumlah Polutan terhadap Kualitas Udara")
)
Berdasarkan visualisasi di atas, udara yang berkualitas BAIK memiliki rentang total partikulat berpusat di nilai 96-129 µg/m³, rentang udara berkualitas SEDANG berpusat di nilai 148-191 µg/m³, sedangkan rentang udara yang TIDAK SEHAT berpusat di nilai 216-268 µg/m³. Ini menunjukkan bahwa semakin tinggi jumlah polutan yang terkandung dalam udara, semakin buruk kualitas udara tersebut.
#menghitung rata-rata konsentrasi partikulat per tahun
average_particulate_per_year <- df %>%
filter(year >= 2010 & year <= 2021) %>%
group_by(year) %>%
summarise(average_particulate = mean(sum_partikulat, na.rm = TRUE)) %>%
ungroup()
#membuat line chart interaktif
ggplotly(ggplot(average_particulate_per_year, aes(x = year, y = average_particulate, group = 1)) +
geom_line(color = "blue") +
geom_point(color = "red") +
labs(title = "Rata-rata Konsentrasi Partikulat Tiap Tahun (2010-2021)",
x = "Tahun",
y = "Rata-rata Konsentrasi Total Partikulat (µgram/m³)") +
theme_minimal()
)
Visualisasi di atas menunjukkan rata-rata konsentrasi partikulat dari tahun 2010 hingga 2021. Dari tahun 2010-2012, terjadi peningkatan konsentrasi dengan puncak sekitar 200 µg/m³. Pada tahun-tahun berikutnya, terjadi penurunan yang cukup signifikan mulai dari tahun 2013-2018, dengan titik terendah konsentrasi sebesar sekitar 140 µg/m³ pada tahun 2017. Namun, setelahnya terjadi peningkatan pada tahun 2019, di mana konsentrasi partikulat kembali mendekati 200 µg/m³.
#membuat variabel rata-rata per tahun
rerata_polutan_pertahun <- df %>%
filter(year >= 2010 & year <= 2021) %>%
group_by(year) %>%
summarise(
PM10 = mean(pm10, na.rm = TRUE),
SO2 = mean(so2, na.rm = TRUE),
CO = mean(co, na.rm = TRUE),
O3 = mean(o3, na.rm = TRUE),
NO2 = mean(no2, na.rm = TRUE)
) %>%
pivot_longer(cols = c(PM10, SO2, CO, O3, NO2), names_to = "Polutan", values_to = "Rata_rata") #untuk teks saat dihover ke titik-titik di chart
#membuat line chart interaktif
ggplotly(ggplot(rerata_polutan_pertahun, aes(x = year, y = Rata_rata, color = Polutan, group = Polutan)) +
geom_line() +
geom_point() +
labs(title = "Rata-rata Konsentrasi Partikulat Tiap Tahun (2010-2021)",
x = "Tahun",
y = "Rata-rata Konsentrasi (µgram/m³)",
color = "Polutan") +
theme_minimal()
)
Visualisasi di atas menampilkan rata-rata setiap partikulat per tahun mulai dari 2010 sampai dengan 2021 dimana puncak tertinggi O3 berada di tahun 2012 dan CO, O3 dan SO2 berada di titik yang hampir sama di tahun 2016. Adapun partikulat yang mengalami lonjakan dan penurunan yang paling drastis adalah O3 dan NO2 cenderung selalu rendah.
pal <- c("springgreen4", "gold1", "grey", "red") #skema warna untuk kategori baik, sedang, tidak ada data, dan tidak sehat
#membuat scatter plot dengan mode markers
plot_ly(
data = df,
x = ~max,
y = ~no2,
type = "scatter",
mode = "markers",
color = ~categori,
colors = pal
)
Di sini terdapat 3 variabel, yaitu max, no2, dan categori dimana categori memberikan warna sekaligus mengelompokkan variabel-variabel tersebut. Kami memilih untuk menganalisis kedua variabel ini dengan no2 karena pada awalnya kami mencari tahu apakah ada pengaruh antara variabel max dan no2 namun kami menemukan sesuatu yang sangat menarik, yaitu berurutnya dan nampak jelas perbedaan setiap kandungan NO2 dalam jumlah max apabila diurutkan berdasarkan kategori. Hal ini menunjukkan akan pengaruh kandungan NO2 dan max dalam menentukan baik tidaknya suatu kualitas udara. Dari data ini, kita dapat variabel max yang kurang dari 50 (<=50 µg/m³) cenderung BAIK dengan kandungan NO2 maximum 49 µg/m³, sedang sendiri cenderung di antara 50 µg/m³ dan 100 µg/m³ dengan tingkatan NO2 diantara 0-50 µg/m³ dan tingkatan 20-80 µg/m³ juga terdapat dengan nilai max kurang dari 50 µg/m³ dan yang terakhir tidak sehat cenderung berada di atas 100 max dengan maximum kandungan NO2 49 µg/m³.
Analisis yang dilakukan pada data kualitas udara di Bundaran HI selama periode 2010-2021 menunjukkan beberapa pola dan tren yang signifikan. Pertama, dari visualisasi data, terlihat adanya fluktuasi dalam konsentrasi partikulat dan polutan lainnya dari tahun ke tahun. Beberapa polutan seperti PM10 dan NO2 menunjukkan peningkatan pada tahun tertentu yang mungkin berhubungan dengan peningkatan aktivitas industri atau transportasi di wilayah tersebut.
Namun, dari correlation plot, kita dapat melihat bahwa korelasi antara variabel polutan cenderung rendah. Misalnya, PM10 dan NO2 menunjukkan korelasi yang tidak terlalu kuat, yang menunjukkan bahwa peningkatan salah satu polutan tidak selalu diikuti dengan peningkatan polutan lainnya. Hal ini mengindikasikan bahwa sumber polusi di Bundaran HI mungkin bersifat multifaktor, tetapi tidak selalu saling berkaitan secara langsung.
Selain itu, hasil dari bar plot dan time series line chart untuk variabel critical menunjukkan bahwa SO2 seringkali menjadi polutan kritis dalam periode waktu tertentu. Hal ini bisa disebabkan oleh emisi dari kendaraan bermotor atau pembakaran bahan bakar fosil.
Analisis ini juga menunjukkan pentingnya penghapusan data PM2.5 yang tidak lengkap dan bagaimana penghapusan ini dapat mempengaruhi hasil analisis secara keseluruhan. Imputasi missing value dan encoding variabel kategorikal membantu dalam menangani data yang tidak lengkap dan memastikan analisis berjalan dengan lancar.
Secara keseluruhan, analisis ini menunjukkan bahwa kualitas udara di Bundaran HI dipengaruhi oleh berbagai faktor dan bahwa upaya pengurangan polusi harus mempertimbangkan berbagai sumber emisi yang berkontribusi terhadap peningkatan konsentrasi polutan di udara.
Kesimpulan dari laporan ini adalah bahwa kualitas udara di Bundaran HI Jakarta selama periode 2010-2021 mengalami fluktuasi yang signifikan dalam konsentrasi polutan utama seperti PM10, SO2, CO, O3, dan NO2. Polutan PM10 khususnya menonjol sebagai perhatian utama karena tingkatnya yang tinggi pada beberapa periode. Analisis menggunakan Exploratory Data Analysis (EDA) dan korelasi Pearson memberikan wawasan yang berharga tentang pola-pola dalam data polusi udara.
Laporan ini diharapkan memberikan dasar yang kuat bagi pembaca dalam memahami kondisi kualitas udara di Bundaran HI dan membantu dalam pengambilan keputusan yang lebih baik terkait upaya peningkatan kualitas udara di Jakarta.